The present invention relates generally to managing multiple software products or versions of products installed on a user's computing device.
Managing multiple products and/or versions of software products that use shared software components in different development and release cycles can present a challenge when multiple products are installed on a user's computing device. A newly installed product that uses a shared component or resource can overwrite that shared component/resource with a newer version, thereby affecting installed products. Accordingly, maintaining compatibility between software products on a user's computing device and ensuring that an installation activity does not affect existing components is important.
A known solution to this problem is using a product matrix that lists on a horizontal axis all products that have common physical components and on a vertical axis physical components that make up a product. A physical software component is a cohesive piece of software that offers a cohesive set of services. Examples of physical software components are executable files, data storage, libraries, and/or a combination thereof. The product matrix indicates which physical components are included into each product. Such a matrix usually requires thousands of entries due to a large number of the physical components. In addition, a compatibility matrix is created that lists compatibility between any two physical components for all the products listed in the product matrix. When installing a new product, the matrix is traversed to determine whether the new product and the installed products have any two physical components that are not compatible. As most software products contain dozens, sometime hundreds of components, adding a new product to a user's computer increase the number of physical components that need to be analyzed in order to determine compatibility between any two products.